package com.zzy.service;

import java.util.List;
import java.util.Map;

import org.hibernate.Criteria;
import org.springframework.stereotype.Service;

import com.zzy.model.User;

/**
 * 用户接口
 * @author zzy
 *
 */
public interface UserService {

    /**
     * 根据HQL和条件
     * 获取User实体
     * @param hql
     * @param param
     * @return
     */
    public User getUnique(String hql,Object param[]);

    /**根据用户名和密码获取用户实体
     * @param username
     * @param password
     * @return User
     */
    public User getUserForLogin(String username,String password);

    /**
     * 根据UID获取用户实体
     * @param id
     * @return User
     */
    public User getByID(String id);
    /**获取用户信息
     * 可带 可不带 条件
     * @return List<User>
     */
    public List<User> getAll(String hql,Object param[]);
    /**
     * 分页获取 用户 列表
     * @param hql
     * @param param
     * @param page
     * @param rows
     * @return List<User>
     */
    public List<User> getPage(String hql , Object param[],Integer page,Integer rows);

    public List<User> getPage(Criteria cr,Integer page,Integer rows);
    public List<User> getList(String hql, Object param[]);
    public List<User> getList(Criteria cr);

    /**根据role获取用户的ID,组合*/
    public String getUserIdsByRole(String role);

    /**
     * 获取List的条数
     * "select count(*) from User where ... "
     *
     */
    public Integer getTotalNum(String hql,Object param[]);

    /**
     * 添加新用户
     * 1成功-1失败
     * @param user
     * @return int
     */
    public Integer save(User user);
    /**
     * 根据Uid删除用户
     * 1成功-1失败
     * @param id
     * @return int
     */
    public Integer del(String id);
    /**
     * 更新
     * 1成功-1失败
     * @param user
     * @return int
     */
    public Integer update(User user);
    /**
     * 保存或者更新
     * 1成功-1失败
     * @param user
     * @return int
     */
    public Integer saveOrUpdate(User user);

    /**判断用户名是否存在*/
    public boolean isExist(String userName);


}

